Thuật toán Mật khẩu một lần dựa trên thời gian

Để thiết lập xác thực TOTP, người xác thực và trình xác thực phải thiết lập trước cả tham số HOTP và tham số TOTP sau:

  • T0, Thời gian Unix để bắt đầu đếm các bước thời gian (mặc định là 0),
  • TX, một khoảng thời gian sẽ được sử dụng để tính toán giá trị của bộ đếm CT (mặc định là 30 giây).

Cả trình xác thực và người xác thực đều tính toán giá trị TOTP, sau đó trình xác thực kiểm tra xem giá trị TOTP do người xác thực cung cấp có khớp với giá trị TOTP được tạo cục bộ hay không. Một số trình xác thực cho phép các giá trị lẽ ra phải được tạo trước hoặc sau thời gian hiện tại để tính đến độ lệch nhẹ của đồng hồ, độ trễ mạng và độ trễ của người dùng.

TOTP sử dụng thuật toán HOTP, thay thế bộ đếm bằng giá trị không giảm dựa trên thời gian hiện tại:

      giá trị TOTP(K) = Giá trị HOTP(K, CT),

tính giá trị bộ đếm

C T = ⌊ T − T 0 T X ⌋ , {\displaystyle C_{T}=\left\lfloor {\frac {T-T_{0}}{T_{X}}}\right\rfloor ,}

tại đây mà

  • CT là số lượng thời lượng TX giữa T0 và T ,
  • T là thời gian hiện tại tính bằng giây kể từ một epoch cụ thể,
  • T0 là epoch được chỉ định tính bằng giây kể từ Unix epoch (ví dụ: nếu sử dụng thời gian Unix, thì T0 là bằng 0),
  • TX là độ dài của một khoảng thời gian (ví dụ: 30 giây).

Thời gian Unix không tăng lên một cách nghiêm ngặt. Khi một giây nhuận được chèn vào UTC, thời gian Unix lặp lại một giây. Nhưng một giây nhuận không làm cho phần nguyên của thời gian Unix giảm và CT cũng không giảm miễn là TX là bội số của một giây.

Tài liệu tham khảo

WikiPedia: Mật khẩu một lần dựa trên thời gian http://www.openauthentication.org/news/20080408 https://www.docker.com/blog/designing-docker-hub-2... https://blog.malwarebytes.com/cybercrime/2019/01/t... https://www.transmitsecurity.com/blog/totp-the-goo... https://www.wired.com/2011/06/rsa-replaces-securid... https://web.archive.org/web/20110711124823/http://... https://web.archive.org/web/20130409124046/http://... https://web.archive.org/web/20200925082641/https:/... https://web.archive.org/web/20201112032021/https:/... https://tools.ietf.org/html/rfc6238